home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / aminet / mus / play / multiplsr.lha / include / macros.i < prev    next >
Text File  |  1992-02-25  |  4KB  |  156 lines

  1. *********************************************************************
  2. *
  3. *                                   Macros.i
  4. *                    Bryan's obfuscated macros for A68k
  5. *
  6. *                       Copyright (C) 1990 Bryan Ford
  7. *                            All Rights Reserved
  8. *
  9. *********************************************************************
  10.         ifnd    BRY_MACROS_I
  11. BRY_MACROS_I    set     1
  12.  
  13. b       macro   ; <label>               ; Branch
  14.         bra.\0  \1
  15.         endm
  16.  
  17. bhs     macro   ; <label>               ; Branch if higher or same (unsigned)
  18.         bcc.\0  \1
  19.         endm
  20.  
  21. blo     macro   ; <label>               ; Branch if lower (unsigned)
  22.         bcs.\0  \1
  23.         endm
  24.  
  25. bz      macro   ; <label>               ; Branch if zero
  26.         beq.\0  \1
  27.         endm
  28.  
  29. bnz     macro   ; <label>               ; Branch if zero
  30.         bne.\0  \1
  31.         endm
  32.  
  33. macm    macro   ; <source> <dest>       ; Macro used by move macros
  34.         ifc     '\3',''
  35.         move.\0 \1,\2
  36.         endc
  37.         ifnc    '\3',''
  38.         ifc     '\4',''
  39.         move.\0 \1,\2,\3
  40.         endc
  41.         ifnc    '\4',''
  42.         move.\0 \1,\2,\3,\4
  43.         endc
  44.         endc
  45.         endm
  46.  
  47. ml      macro   ; <source>,<dest>       ; Move long
  48.         macm.l  \1,\2,\3,\4
  49.         endm
  50.  
  51. mw      macro   ; <source>,<dest>       ; Move word
  52.         macm.w  \1,\2,\3,\4
  53.         endm
  54.  
  55. mb      macro   ; <source>,<dest>       ; Move byte
  56.         macm.b  \1,\2,\3,\4
  57.         endm
  58.  
  59. mq      macro   ; <const>,<dest>        ; Move quick
  60.         moveq   \1,\2
  61.         endm
  62.  
  63. cq      macro   ; <dn>                  ; Clear quick D reg
  64.         moveq   #0,\1
  65.         endm
  66.  
  67. push    macro   ; <registers>           ; Push (long) registers on stack
  68.         movem.l \1,-(sp)
  69.         endm
  70.  
  71. pop     macro   ; <registers>           ; Pop (long) registers off of stack
  72.         movem.l (sp)+,\1
  73.         endm
  74.  
  75. apush   macro                           ; Automatically save registers
  76.         autoreg                         ; Clear autoreg list
  77.         push    \aregs
  78.         endm
  79.  
  80. apop    macro                           ; Restore registers
  81.         pop     \aregs
  82. \aregs  autoreg d0-d1/a0-a1/sp
  83.         endm
  84.  
  85. apush4  macro                           ; Automatically save registers
  86.         autoreg                         ; Clear autoreg list
  87.         push    \aregs
  88.         endm
  89.  
  90. apop4   macro                           ; Restore registers
  91.         pop     \aregs
  92. \aregs  autoreg d0-d1/a0-a1/a4/sp
  93.         endm
  94.  
  95. dcb     macro   ; <count>               ; Alternative to ds
  96.         ds.\0   \1
  97.         endm
  98.  
  99. jl      macro   ; <libfunc>             ; Call library function
  100.         jsr     _LVO\1(a6)
  101.         endm
  102.  
  103. casl    macro   ; bits,Dn               ; Shift Dn left by constant number of bits
  104.         ifgt    \1-8
  105.         asl.\0  #8,\2
  106.         casl.\0 \1-8,\2
  107.         endc
  108.         ifle    \1-8
  109.         asl.\0  #\1,\2
  110.         endc
  111.         endm
  112.  
  113. clsl    macro   ; bits,Dn               ; Shift Dn left by constant number of bits
  114.         casl.\0 \1,\2
  115.         endm
  116.  
  117. casr    macro   ; bits,Dn               ; Arithmetic shift Dn right by constant
  118.         ifgt    \1-8
  119.         asr.\0  #8,\2
  120.         casr.\0 \1-8,\2
  121.         endc
  122.         ifle    \1-8
  123.         asr.\0  #\1,\2
  124.         endc
  125.         endm
  126.  
  127. clsr    macro   ; bits,Dn               ; Logical shift Dn right by constant
  128.         ifgt    \1-8
  129.         lsr.\0  #8,\2
  130.         clsr.\0 \1-8,\2
  131.         endc
  132.         ifle    \1-8
  133.         lsr.\0  #\1,\2
  134.         endc
  135.         endm
  136.  
  137. dsxd    macro   ; label,count           ; Externally visible ds (for both C and asm)
  138.         xdef    \1,_\1
  139. \1:
  140. _\1:    ds.\0   \2
  141.         endm
  142.  
  143. dcxd    macro   ; label,value           ; Externally visible dc (for both C and asm)
  144.         xdef    \1,_\1
  145. \1:
  146. _\1:    dc.\0   \2
  147.         endm
  148.  
  149. dcx     macro                           ; Define long external
  150.         xref    \1
  151.         dc.\0   \1
  152.         endm
  153.  
  154.  
  155.         endc
  156.